package com.whfc.wxmp.api.fse.service;

import com.whfc.common.result.ListData;
import com.whfc.common.result.PageData;
import com.whfc.fse.dto.FseLiftDTO;
import com.whfc.fse.dto.FseLiftDataDTO;
import com.whfc.fse.dto.FseLiftDataLogDTO;
import com.whfc.fse.dto.FseLiftFvsDeviceDTO;
import com.whfc.fse.param.*;

import java.util.Date;
import java.util.List;

/**
 * @DESCRIPTION 升降机管理
 * @AUTHOR GuoDong_Sun
 * @DATE 2020/4/10
 */
public interface WxFseLiftService {
    /**
     * 升降机列表
     *
     * @param pageNum
     * @param pageSize
     * @param deptId
     * @param keyword
     * @param bindFlag
     * @param netState
     * @return
     */
    PageData<FseLiftDTO> list(Integer pageNum, Integer pageSize, Integer deptId, String keyword, Integer bindFlag, Integer netState);

    /**
     * 添加升降机
     *
     * @param request
     */
    void add(FseLiftAddParam request);

    /**
     * 编辑升降机
     *
     * @param request
     */
    void edit(FseLiftEditParam request);

    /**
     * 删除升降机
     *
     * @param id
     */
    void del(Integer id);

    /**
     * 升降机绑定硬件
     *
     * @param request
     */
    void bind(FseLiftBindParam request);

    /**
     * 升降机解绑硬件
     *
     * @param param
     */
    void unbind(FseLiftUnbindParam param);

    /**
     * 升降机列表
     *
     * @param deptId
     * @param bindFlag
     * @return
     */
    ListData<FseLiftDTO> list(Integer deptId, Integer bindFlag);
    /**
     * 升降机列表
     *
     * @param deptId
     * @return
     */
    List<FseLiftDTO> listV2(Integer deptId);

    /**
     * 查询升降机详情
     *
     * @param liftId 升降机ID
     * @return 升降机详情
     */
    FseLiftDTO detail(Integer liftId);

    /**
     * 绑定视频监控
     *
     * @param request 请求参数
     */
    void bindFvs(FseLiftFvsParam request);

    /**
     * 获取视频监控列表
     *
     * @param liftId 升降机ID
     * @return
     */
    List<FseLiftFvsDeviceDTO> fvsList(Integer liftId);

    /**
     * 获取升降机及时数据
     *
     * @param liftId
     * @return
     */
    List<FseLiftDataDTO> latest(Integer liftId);

    /**
     * 获取升降机监控的历史数据
     *
     * @param liftId
     * @param date
     * @return
     */
    ListData<FseLiftDataLogDTO> log(Integer liftId, Date date);

}
